package com.hoe.tsb.fraft.client.role;

import com.hoe.tsb.fraft.enums.RoleType;

/**
 * <p>
 * 角色状态切换观察者
 * </p>
 *
 * @author hoe
 * @version 1.0
 * @date 2022/12/5
 */
public interface RoleObserver {

    /**
     * 切换到角色
     * @param roleType 需要切换到的角色枚举
     */
    void turnTo(RoleType roleType);

    /**
     * 获取当前任期号
     * @return 当前任期号
     */
    int getTerm();

    /**
     * 将当前任期号调整为指定值
     * @param term 任期号
     */
    void setTerm(int term);

    /**
     * 获取当前最大索引号
     * @return 最大索引号
     */
    int getMaxIndex();

}
